//package com.iwhalecloud.bss.kite.cucc.web.service.accept.handler.module;
//
//import com.iwhalecloud.bss.kite.client.dto.inst.InstAttrDTO;
//import com.iwhalecloud.bss.kite.client.vo.scene.CommonAttrVO;
//import com.iwhalecloud.bss.kite.client.vo.scene.ModuleVO;
//import com.iwhalecloud.bss.kite.common.constant.KeyConsts;
//import com.iwhalecloud.bss.kite.common.util.KiteBeanUtils;
//import com.iwhalecloud.bss.kite.common.util.KiteListUtils;
//import com.iwhalecloud.bss.kite.common.util.KiteStringUtils;
//import com.iwhalecloud.bss.kite.cucc.client.api.attr.ILocalQueryScenePersonInfoService;
//import com.iwhalecloud.bss.kite.cucc.client.dto.pos.KitePosDTO;
//import com.iwhalecloud.bss.kite.cucc.client.dto.pos.KitePosOperatorDTO;
//import com.iwhalecloud.bss.kite.cucc.client.vo.scene.CuccCommonAttrVO;
//import com.iwhalecloud.bss.kite.cucc.client.vo.scene.HandlerCustInfoVO;
//import com.iwhalecloud.bss.kite.cucc.client.vo.scene.SceneNewOfferSeneVO;
//import com.iwhalecloud.bss.kite.cucc.common.constant.LocalKeyConsts;
//import com.iwhalecloud.bss.kite.cucc.common.util.AssemblyAttrDtoUtils;
//import com.iwhalecloud.bss.kite.cucc.dataservice.cache.ExtOrderInfoCache;
//import com.iwhalecloud.bss.kite.manager.api.IQuerySceneInstService;
//import com.iwhalecloud.bss.kite.web.context.KiteWebContext;
//import com.iwhalecloud.bss.kite.web.service.accept.bo.AcceptContext;
//import com.iwhalecloud.bss.kite.web.service.accept.bo.SceneModule;
//import com.iwhalecloud.bss.kite.web.service.accept.handler.module.AbstractModuleHandler;
//import com.ztesoft.bss.common.util.SpringUtil;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.ArrayList;
//import java.util.Collections;
//import java.util.List;
//import java.util.Objects;
//import java.util.Optional;
//import java.util.stream.Collectors;
//
///**
// * <Description> 经办人 <br>
// *
// * @author zixin<br>
// */
//@Service
//public class HandlerCustInfoModuleHandler extends AbstractModuleHandler {
//
//    @Autowired
//    private ILocalQueryScenePersonInfoService queryScenePersonService;
//
//    @Autowired
//    IQuerySceneInstService querySceneInstService;
//
//    @Override
//    public List<ModuleVO> execute(AcceptContext context, SceneModule sceneModule) {
//        String operatorFlag = getOperatorFlag();
//
//        List<InstAttrDTO> attrConfigs = queryScenePersonService
//            .listHandlerCustInfoAttrs(context.getAcceptRequest().getSceneInstId()).getResultObject().stream()
//            .filter(instAttrDTO -> LocalKeyConsts.KITE_ATTR_CONFIG_SHOW_TYPE_D.equals(instAttrDTO.getShowType()))
//            .collect(Collectors.toList());
//        List<CommonAttrVO> commonAttrList = AssemblyAttrDtoUtils.assemblyVO(attrConfigs);
//
//        HandlerCustInfoVO handlerCustInfoVO = new HandlerCustInfoVO();
//        handlerCustInfoVO.setHandlerCustAttr(commonAttrList);
//        handlerCustInfoVO.setOperatorFlag(Optional.ofNullable(operatorFlag).orElse(KeyConsts.IFTRUE_F));
//
//        SceneNewOfferSeneVO sceneAccountInfoVo = (SceneNewOfferSeneVO) context.getSceneVo();
//        sceneAccountInfoVo.setHandlerCustInfo(handlerCustInfoVO);
//
//        return Collections.singletonList(handlerCustInfoVO);
//    }
//
//    @Override
//    public List<ModuleVO> previewSceneVo(AcceptContext context, SceneModule sceneModule) {
//
//        if (!KeyConsts.IFTRUE_T.equals(getOperatorFlag())) {
//            return Collections.EMPTY_LIST;
//        }
//        List<InstAttrDTO> attrConfigs = queryScenePersonService
//            .listHandlerCustInfoAttrs(context.getAcceptRequest().getSceneInstId()).getResultObject();
//
//        HandlerCustInfoVO handlerCustInfoVO = new HandlerCustInfoVO();
//        handlerCustInfoVO.setHandlerCustAttr(AssemblyAttrDtoUtils.assemblyCommonVO(attrConfigs));
//
//        SceneNewOfferSeneVO sceneAccountInfoVo = (SceneNewOfferSeneVO) context.getSceneVo();
//
//        List<CommonAttrVO> cuccAttrList = new ArrayList<>();
//        List<CommonAttrVO> transferDisplayInfoAttrs = handlerCustInfoVO.getHandlerCustAttr();
//        if (KiteListUtils.isNotEmpty(transferDisplayInfoAttrs)) {
//            //设置预览模式
//            transferDisplayInfoAttrs.forEach((attr) -> {
//                attr.setAttrValueTypeId("TT");
//            });
//
//            String busiChangeScene = querySceneInstService
//                .getExtParameterValue(context.getSceneVo().getSceneInstId(), LocalKeyConsts.BUSI_CHANGE_SCENE);
//            if (KeyConsts.IFTRUE_T.equals(busiChangeScene)) {
//                cuccAttrList = this
//                    .getCuccCommonAttrVOList(transferDisplayInfoAttrs, context.getAcceptRequest().getSceneInstId());
//                transferDisplayInfoAttrs = cuccAttrList;
//            }
//        }
//        handlerCustInfoVO.setHandlerCustAttr(transferDisplayInfoAttrs);
//        sceneAccountInfoVo.setHandlerCustInfo(handlerCustInfoVO);
//
//        return Collections.singletonList(handlerCustInfoVO);
//    }
//
//    private List<CommonAttrVO> getCuccCommonAttrVOList(List<CommonAttrVO> transferDisplayInfoAttrs,
//        String sceneInstId) {
//        List<CommonAttrVO> cuccAttrList = new ArrayList<>();
//        transferDisplayInfoAttrs.forEach(commonAttrVO -> {
//            CuccCommonAttrVO cuccCommonAttrVO = new CuccCommonAttrVO();
//            // 处理经办人变更的信息
//            this.dealHandlerCustInfoOldValues(cuccCommonAttrVO, commonAttrVO, sceneInstId);
//            cuccAttrList.add(cuccCommonAttrVO);
//        });
//        return cuccAttrList;
//    }
//
//    //获取是否展示的标识
//    private String getOperatorFlag() {
//        IQuerySceneInstService operateSceneInstService = SpringUtil.getBean(IQuerySceneInstService.class);
//        String operatorFlag = operateSceneInstService
//            .getExtParameterValue(KiteWebContext.getContext().getCurrentSceneInstId(), "operatorFlag");
//        return operatorFlag;
//    }
//
//    private void dealHandlerCustInfoOldValues(CuccCommonAttrVO cuccCommonAttrVO, CommonAttrVO commonAttrVO,
//        String sceneInstId) {
//        KiteBeanUtils.copyProperties(commonAttrVO, cuccCommonAttrVO);
//        KitePosDTO kitePosDTO = ExtOrderInfoCache.get(sceneInstId);
//        if (Objects.nonNull(kitePosDTO)) {
//            KitePosOperatorDTO cuccPosOperator = kitePosDTO.getOperator();
//            if ("handler_info_name".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getName())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getName());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//            else if ("handler_info_cardtype".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getIdType())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getIdType());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//            else if ("handler_info_tel".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getPhone())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getPhone());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//            else if ("handler_info_cardnum".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getIdNo())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getIdNo());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//            else if ("handler_info_email".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getEmail())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getEmail());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//            else if ("handler_info_sex".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getSex())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getSex());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//            else if ("handler_info_fixedphone".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getFixedPhone())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getFixedPhone());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//            else if ("handler_info_faxnum".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getFax())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getFax());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//            else if ("handler_info_postcode".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getPostcode())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getPostcode());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//            else if ("handler_info_satisfaction".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getCustSatisfaction())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getCustSatisfaction());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//            else if ("handler_info_address".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getAddress())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getAddress());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//            else if ("handler_info_comments".equals(commonAttrVO.getFieldName()) && !KiteStringUtils
//                .isEqual(cuccCommonAttrVO.getValue(), cuccPosOperator.getRemark())) {
//                cuccCommonAttrVO.setOldValue(cuccPosOperator.getRemark());
//                cuccCommonAttrVO.setChangeFlag(true);
//                return;
//            }
//        }
//    }
//}
